package 基础练习;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * @author： li
 * @date： 2022-01-10 21:44
 * @version 1.0
 */
/*问题描述
　　求出区间[a,b]中所有整数的质因数分解。
输入格式
　　输入两个整数a，b。
输出格式
　　每行输出一个数的分解，形如k=a1*a2*a3...(a1<=a2<=a3...，k也是从小到大的)(具体可看样例)
样例输入
3 10
样例输出
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5
提示
　　先筛出所有素数，然后再分解。
数据规模和约定
　　2<=a<=b<=10000
 */

public class 分解质因数_乱序版 {
    static ArrayList<Integer> isp1= new ArrayList<>();
    static  void printR(int i) {
        int j = 0;
        int k = i;									//将值赋给k，不改变i
        while (k != 1) {//while循环用来求因子
            for (Integer integer : isp1) {
                if (k % integer == 0) {                    //找到一个因子，就将原数除以这个因子。再次循环，直到k为1
                    k /= integer;
                    if (k == 1) {
                        System.out.print(integer);        //最后没有乘号
                    } else {
                        System.out.print(integer + "*");
                    }
                }
            }
        }
    }
    static boolean isP(int k){
        int i;int count=0;
        for ( i=2; i<k; i++ )
        {
            if(k%i==0)
                count++;
        }
        return count == 0;
    }
    public static void main(String[] args) {
        int a,b;
        Scanner sc = new Scanner(System.in);
        a=sc.nextInt();b=sc.nextInt();
        for(int i=2;i<=b;i++){
            if(isP(i)) isp1.add(i);
        }
        for(Integer integer:isp1)
            System.out.print(integer+" ");
        System.out.println(" ");
        for(int i=a;i<=b;i++){
                System.out.print(i+"=");
                    printR(i);
                System.out.println(" ");
            }
        }
    }
